/*
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef __COLLECTIONS__H__
#define __COLLECTIONS__H__

#include "list.h"
#include "album.h"
#include "song.h"

struct __collections {
    enum ALBUM_TYPE album_type;
    struct list_head all_songs_head;
    struct list_head albums_head;
    struct list_head play_list_head;
    struct list_head played_list_head;
    struct list_head shuffle_list_head;
};


typedef struct __collections Collections;

Collections *get_all_songs();
void collections_free(Collections *C);

void create_album(Collections *C);
Album * seach_album_by_dir (Collections *C, const char *dir);

int shuffle_list_shuffle(Collections *C);
int play_list_add_song(Collections *C, Song *S);
int play_list_add_album(Collections *C, Album *A);
int play_list_remove_song(Collections *C, Song *S);
int play_list_remove_album(Collections *C, Album *A);
int move_song_to_played_list(Collections *C, Song *S);
int play_played_list_clear(Collections *C);

#endif
